Selektionsbild

Dies ist Teil 5 von 11 der Serie Interaktive Liste

Beim Selektionsbild ist wichtig, dass die Felder übersichtlich geordnet sind. Dies erleichtert dem Anwender die Eingabe. Fatal ist es, wenn der Anwender in verschiedenen Abhängigkeiten Felder eingeben muss, es aber nicht ersichtlich ist, wann welche Felder gefüllt werden müssen.

In der Regel haben Reports einen Selektionsbildschirm, in dem der Anwender die Datenselektion und/ oder die Listausgabe/ Listaufbereitung beeinflussen kann.

Es gibt die folgenden zwei Befehle, mit denen die Eingabewerte aufgenommen werden können:

PARAMETERS

Mit diesem Befehl wird die Eingabe eines Wertes gefordert. Mit diversen Zusätzen ist es auch möglich, eine List-Box als Eingabe zu definieren oder eine Checkbox oder einen Radiobutton. Bemühen Sie zu näheren Informationen bitte die F1-Taste.

SELECT-OPTIONS

Mit der Select-Options-Anweisung können mehrere Werte aufgenommen werden sowie Intervalle. Die Einzelwerte nicht auf ihre Gültigkeit überprüft! Das ist auch sinnvoll, da bei Intervallen eben kein genauer Wert ermittelt werden soll, sondern alles, was in diesem Intervall liegt (oder NICHT in diesem Intervall liegt).

Die Werte werden in einer sogenannten RANGES-Tabelle gespeichert, die auch mit der Anweisung

RANGES r_datum FOR sy-DATUM

definiert werden kann. Die Gültigkeit eines Wertes kann durch

CHECK feldname IN [Ranges-Tabelle].

geprüft werden. Ebenso kann auch mittels IF-Anweisung geprüft werden.

Auch in einer Select-Anweisung können die Ranges-Tabellen verwendet werden.

Die Tabelle besteht aus den Feldern

  • SIGN
  • OPTION
  • LOW
  • HIGH

SIGN

Dieses Feld kann nur zwei Werte enthalten:

  • I für Including, also das Einschließen von Werten
  • E für Excluding, also das Ausschließen von Werten

OPTION

Hier wird die Art der Prüfung hinterlegt:

  • EQ für Equal, also Gleich dem Wert, der in LOW steht
  • BT für Between, also einem Intervall von LOW bis HIGH einschließlich
  • CP für Contains Pattern, also eine Mustersuche mit den Wildcards * und ?
  • Weitere Werte stehen in der Hilfe

LOW und HIGH

Hier stehen nun die zu selektierenden Werte. Das Feld LOW muss immer gefüllt sein (Es sei denn, Sie möchten genau SPACE suchen). HIGH muss nur bei Intervallen gefüllt werden.

Wildcards

Bei der Eingabe von Selektionswerten können Wildcards benutzt werden:

* bedeutet: “alles”, also zum Beispiel:

ABC* findet ABCDEF und ABCABC

A*P findet ABAP, AAPP und AXP

+ bedeutet: “genau ein Zeichen”

++_ABC findet 01_ABC, TT_ABC etc

A+A+ findet ABAP und A1A2 etc

Beispiel

Um eine SELECT-OPTION vorzubelegen, müssen Sie die gewünschten Werte in der INITIALIZATION-Section an die Tabelle anhängen.

Eingabeparameter für die Fluggesellschaften:

SELECT-OPTIONS s_carrid FOR t_scarr-carrid.

Alle Fluggesellschaften vorbelegen, die

  • mit A beginnen
  • Delta Airlines und Lauda Air
  • Lufthansa und Swissair ausshließen
*--- Alle Fluggesellschaften, die mit A beginnen
s_carrid-sign   = 'I'.  "Including
s_carrid-option = 'CP'. "Muster
s_carrid-low    = 'A*'. "Mit A beginnend
APPEND s_carrid.

*--- Fluggesellschaften "Delta Airlines" und "Lauda Air"
s_carrid-sign   = 'I'.  "Including
s_carrid-option = 'EQ'. "gleich
s_carrid-low    = 'DL'. "Delta Airlines
APPEND s_carrid.
s_carrid-low    = 'NG'. "Lauda Air
APPEND s_carrid.

*--- Fluggesellschaften "Lufthansa" und "Swissair" ausschließen
s_carrid-sign   = 'E'.  "Excluding
s_carrid-option = 'EQ'. "Muster
s_carrid-low    = 'LH'. "Lufthansa
APPEND s_carrid.
s_carrid-low    = 'SR'. "Swissair
APPEND s_carrid.

SELECT * FROM scarr INTO TABLE t_scarr
 WHERE carrid IN s_carrid.


Tipp
Gewöhnen Sie sich die folgende Namensgebung an, um die Parameter und Selektionsoptionen leicht identifizieren zu können:
S_ für SELECT-OPTIONS
P_ für PARAMETERS

Verschönerungen

Es gibt einige Möglichkeiten, die Eingabefelder voneinander abzugrenzen. Eine Möglichkeit ist die, einen Rahmen um eine Gruppe von Feldern zu machen:

SELECTION-SCREEN BEGIN OF BLOCK 1 WITH FRAME TITLE text-t01.
PARAMETERS: ...
SELECTION-SCREEN END   OF BLOCK 1.

Machen Sie einen Doppelklick auf das Textelement und vergeben Sie einen passenden Namen.

Tipp
Die Länge des Textelementes wird automatisch auf die Anzahl der Zeichen angepasst. Korrigieren Sie hier die Länge und machen das Feld etwas größer. Das hat den Vorteil, dass Sie bei Übersetzungen mehr Platz haben!!

Und so sieht’s aus:

Felder auf “nur anzeigen” setzen

Es kann sinnvoll sein, einige Feste Werte mit auf dem Selektionsbild anzuzeigen, um dem Anwender zu zeigen, dass genau dieser Wert bei der weiteren Verarbeitung verwendet wird.

Legen Sie dieses Feld als PARAMETER mit dem Zusatz MODIF ID an und modifizieren Sie es dann wie folgt:

PARAMETERS p_text TYPE text20 MODIF ID dis.

AT SELECTION-SCREEN OUTPUT.

  LOOP AT SCREEN.
    IF screen-group1 = 'DIS'.
      screen-input = '0'.
      MODIFY SCREEN.
    ENDIF.
  ENDLOOP.
Enno Wulff
Series Navigation<< DatendefinitionDatenselektion >>